iT邦幫忙

0

[DAY4] Django與Docker Compose後端開發實戰 - 創建一個基於Django-Rest-Framework的應用

  • 分享至 

  • xImage
  •  

在上一篇文章中,我們探討了如何在Django項目中實現JWT認證系統,並介紹了使用者管理的方法。我們使用了JSON Web Token來驗證用戶身份,並通過API進行了基本的用戶操作。

[DAY3] Django與Docker Compose後端開發實戰 - JWT認證與使用者管理

本篇文章中,我們將進一步學習如何使用Django Rest Framework(DRF)來創建一個API應用,並介紹相關配置和操作步驟。

為什麼選擇使用Django Rest Framework?

Django Rest Framework(DRF)是一個功能強大的工具包,專門用來簡化構建Web API的過程。使用DRF的好處包括:

  • 快速開發:DRF提供了很多現成的工具和類別,可以大大縮短開發時間。
  • 靈活性:DRF支持多種身份驗證方式、權限管理和序列化,可以靈活應對不同的需求。
  • 可擴展性:DRF的設計非常模塊化,可以方便地擴展和定制。
  • 豐富的文檔:DRF提供了豐富的文檔和範例,易於上手和學習。

與不使用DRF相比,使用DRF可以顯著提升開發效率,減少重複代碼,並且可以利用社區提供的各種擴展包和插件,讓開發者能夠專注於業務邏輯的實現,想了解更多可以去閱讀DRF的官方文檔:Django Rest Framework

創建新的App

首先,我們需要創建一個新的App,命名為hello

docker exec -it backend-api-services python3 manage.py startapp hello

預設的App目錄是沒有serializers.pyurls.py文件的,請記得手動創建這些文件。

定義模型

hello/models.py中定義模型HelloModel

from django.db import models

class HelloModel(models.Model):
    name = models.CharField(max_length=100)

    def __str__(self):
        return self.name

這個模型非常簡單,只有一個字段name,我們將使用它來存儲名稱數據。

創建序列化器

hello目錄下創建serializers.py文件,並添加以下內容:

from rest_framework import serializers
from .models import HelloModel

class HelloSerializer(serializers.ModelSerializer):
    class Meta:
        model = HelloModel
        fields = ['id', 'name']

序列化器將模型數據轉換為JSON格式,便於API操作。

創建視圖

hello/views.py中,創建視圖HelloViewSet

from rest_framework import permissions, viewsets
from .models import HelloModel
from .serializers import HelloSerializer
import logging

logger = logging.getLogger('django')

class HelloViewSet(viewsets.ModelViewSet):
    queryset = HelloModel.objects.all()
    serializer_class = HelloSerializer

這裡我們使用了DRF的ModelViewSet,它提供了CRUD操作的默認實現,方便我們快速構建API。

定義路由

hello目錄下創建urls.py文件,並添加以下內容:

from django.urls import path, include
from rest_framework.routers import DefaultRouter

from .views import HelloViewSet

router = DefaultRouter(trailing_slash=False)
router.register("hello", HelloViewSet)

urlpatterns = [
    path('', include(router.urls)),
]

這裡我們使用了DRF的路由器來自動生成URL配置。

更新主項目的設置和路由

backend/settings.py中,將新的App添加到已安裝的應用程序列表中:

INSTALLED_APPS = [
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",
    "django.contrib.staticfiles",
    "account",
    "hello",
]

backend/urls.py中,包含hello的URL配置:

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path("admin/", admin.site.urls),
    path('account/', include('account.urls')),
    path('api/', include('hello.urls')),
]

遷移數據庫

進行數據庫遷移,以應用新的模型變更:

docker exec -it backend-api-services python manage.py makemigrations hello
docker exec -it backend-api-services python manage.py migrate hello

使用DRF API

首先,我們需要獲取JWT Token:

curl --location 'http://localhost:8000/account/token/' \
--header 'Content-Type: application/json' \
--data '{
  "username": "lucien",
  "password": "lucien"
}'

然後帶入access token來嘗試呼叫API:

curl --location 'http://localhost:8000/api/hello' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <your_access_token>' \
--data '{
    "name": "Lucien Test2"
}'

結論

在這篇文章中,我們學習了如何在Django項目中使用DRF創建一個簡單的API應用。我們從創建新的App開始,定義模型、序列化器和視圖,最後配置路由並進行數據庫遷移。通過這些步驟,我們成功地構建了一個基於DRF的API,並通過JWT進行身份驗證。這些技能將為您的Django項目增添更多功能和靈活性。在下一篇文章中,將帶各位讀者了解Django應用上資料庫修改的一些正確方式以及如何正確使用MariaDB和了解其內部的資訊:

[DAY5] Django與Docker Compose後端開發實戰 - 資料庫結構修改與MariaDB管理最佳實踐


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言